ヘッダーをスキップ
Oracle TimesTen Cache Connect to Oracle開発者および管理者ガイド
リリース7.0
E05172-01
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

WHERE句の使用

ユーザー管理キャッシュ・グループおよびREADONLYキャッシュ・グループに対するCREATE CACHE GROUP文の表定義にWHERE句を含めて、キャッシュにOracleデータをコピーする場合の検索条件を指定できます。

LOAD CACHE GROUP文、UNLOAD CACHE GROUP文、MERGE文およびFLUSH CACHE GROUP文にもWHERE句を指定できます。これらの文の使用方法の詳細は、「キャッシュ・グループの使用」を参照してください。LOAD CACHE GROUP文やREFRESH CACHE GROUP文などのいくつかの文では、キャッシュ・グループのWHERE句が文のWHERE句より前に評価される連結WHERE句が発生する場合があります。すべてのWHERE句はTimesTenによって解析されます。TimesTenでサポートされていないOracle SQL構文を使用しないでください。

例2.6

この例では、OracleのCustomer表から、西地区のZIPコードを持つ顧客に関連するデータのみをキャッシュするWHERE句を指定し、WesternCustomersキャッシュ・グループを作成します。

CREATE USERMANAGED CACHE GROUP WesternCustomers

    FROM

    User1.Customer (Custid INTEGER NOT NULL,

        Name VARCHAR(2100) NOT NULL,

        Addr VARCHAR2(100),

        Zip VARCHAR2(10),

        Region VARCHAR2(10),

        PRIMARY KEY(CustId),

        PROPAGATE)

    WHERE (User1.Customer.Region = 'Western');

次に、LOAD CACHE GROUP文にさらにWHERE句を指定し、IDが100以下の西地区の顧客のみをキャッシュします。

LOAD CACHE GROUP WesternCustomers WHERE (CustId <= 100);

CREATE CACHE GROUP文およびLOAD CACHE GROUP文のWHERE句は、データがキャッシュ・グループにロードされる前にOracleで評価されます。

次の表に、LOAD CACHE GROUP文、UNLOAD CACHE GROUP文、REFRESH CACHE GROUP文およびFLUSH CACHE GROUP文のWHERE句がTimesTenで評価されるか、Oracleで評価されるか、あるいはその両方で評価されるかを示します。また、CREATE CACHE GROUP文にWHERE句が含まれている場合、この追加のWHERE句がOracleで評価されるタイミングも示します。

キャッシュ・グループ文
文のWHERE句の評価対象
CREATE CACHE GROUPのWHERE句の評価対象
LOAD
Oracle
Oracle
UNLOAD
TimesTen

-

REFRESH
TimesTenおよびOracle
Oracle
FLUSH
TimesTen
-

次の表に、各キャッシュ・グループの文のWHERE句が、TimesTenによってのみ解析されるか、TimesTenおよびOracleの両方によって解析されるかを示します。

キャッシュ・グループ文
TimesTenによる解析
Oracleによる解析
LOAD
行われる
行われる
UNLOAD
行われる

行われない

REFRESH
行われる
行われる
FLUSH
行われる
行われない
CREATE
行われる
行われる

冗長ロギングを指定すると、Oracleに対して実行されるすべてのSQL文がサーバー・ログに記録されます。キャッシュ・グループ処理の仕組みおよびパフォーマンスの詳細を理解するには、このログを確認します。『Oracle TimesTen In-Memory Databaseトラブルシューティング・プロシージャ・ガイド』のttDaemonLogユーティリティの使用に関する説明を参照してください。

Cache Connect to Oracleで使用されるWHERE句には、次の制限が適用されます。

WHERE句のロケール中立性

キャッシュ・グループとOracleデータベース間の処理は、セッションで使用されるTimesTenグローバリゼーション・サポート接続属性の値を継承します。こうした処理には、パススルー、伝播、ロード、リフレッシュ、フラッシュおよび同期ライトスルーが含まれます。

特定のユーザー・セッションに直接関連付けられていないキャッシュ・グループ処理は、グローバリゼーション・サポート接続属性のデフォルト設定を使用します。これらの処理には、自動リフレッシュ、エージングおよび非同期ライトスルーが含まれます。たとえば、これらの処理はNLS_SORTの値としてBINARYを使用します。

キャッシュ・グループ処理がグローバリゼーション・サポート接続属性の異なる値を使用した場合、非一貫性が生じる可能性があります。たとえば、次の文について考えてみます。

CREATE CACHE GROUP cachegroup1 FROM table1(
     column1 NUMBER NOT NULL PRIMARY KEY,

     column2 NCHAR(30))

WHERE column2 < 'string';

WHERE句の文字列は、文字のバイナリ値を使用して比較されます。これによって、ロケールによっては、キャッシュ・グループ表への移入で意図しない結果が生じる場合があります。

WHERE句の文字列がその言語値を使用して比較されるようにするには、次のようなWHERE句を指定したCREATE CACHE GROUP文を使用します。

CREATE CACHE GROUP cachegroup1 FROM table1(

     column1 NUMBER NOT NULL PRIMARY KEY,

     column2 NCHAR(30))

WHERE

     NLSSORT(column2,'NLS_SORT=TCHINESE_RADICAL')

   < NLSSORT('string','NLS_SORT=TCHINESE_RADICAL');